热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

磁头|磁盘驱动器_服务器的RAID

篇首语:本文由编程笔记#小编为大家整理,主要介绍了服务器的RAID相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了服务器的RAID相关的知识,希望对你有一定的参考价值。



一、RAID的由来

1.1什么是RAID

        磁盘阵列(Redundant Arrays of Independent Drives)又称RAID,有“独立磁盘构成的具有冗余能力的阵列”之意。

1.2 为什么做RAID

        提到RAID 就不可避免要说说硬盘,硬盘的类型从IDE硬盘到SATA硬盘、SAS硬盘继而到现在的SSD硬盘,各种性能都在提升,速度也在不断提高。但是在类似机场这种大型的生产环境下,单块甚至几块硬盘已经无法发挥作用,就需要另辟蹊径找到更佳的提升磁盘性能的方法,于是IT人创造了磁盘阵列这一概念。磁盘阵列就是将很多单块的磁盘组合在一起,构成一个磁盘组。磁盘阵列的诞生,不仅再一次解决了数据访问速度的难题,同时还降低了部分硬盘损坏影响整个系统的风险。

二、RAID级别详解

2.1 RAID 0(条带化技术)

        为了提高传输速率,RAID 0实现了通过在多个磁盘上并行操作来大幅提高访问速度这一功能,其原理是让很多磁盘驱动器同时读写数据。举个例子:假如有2块磁盘,没有RAID技术之前是先写满一块磁盘然后再继续写下一块磁盘,而RAID 0技术的实现使得多块磁盘同时读写成为现实,那么2块硬盘的并行操作在同一时间内磁盘读写的速度就提升了2倍。所以用RAID 0可以达到单个磁盘驱动器几倍的速率。如下图所示:

服务器的RAID_RAID

        虽然RAID 0可以提供更多的空间和更好的性能,但是RAID 0没有冗余和错误修复能力,因此整个系统是非常不可靠的,如果出现故障,无法进行任何补救。所以,不提倡用RAID 0,只是在那些对数据安全性要求不高的情况下才被人们使用。

 2.2 RAID 1(镜像)

        RAID 1称为磁盘镜像,原理是把一个磁盘的数据同时也要放到另一个磁盘上。镜像技术的实现,大大提高了系统的冗余能力,这种情况下,某块磁盘出现问题,因为数据的双份存储,系统仍旧可以正常运行。如下图所示:

服务器的RAID_数据_02

        虽然这样对数据来讲绝对安全,但是成本也会明显增加.假设一个系统实际需要存储400G,每块硬盘容量100G,四块足矣,但是现实却是需要8块硬盘,这可以说是镜像技术的一大硬伤。

        有一点要特别注意,就是在实际生产中,一旦出现硬盘故障,虽然由于镜像的存在系统仍旧可用,但是已经不再安全,不要抱有任何侥幸思想,应当及时的更换损坏的硬盘,否则剩余的镜像盘也可能出现问题,那么整个系统就会崩溃。更换新盘后原有数据会需要很长时间同步镜像,外界对数据的访问不会受到影响,只是这时整个系统的性能有所下降,这就是降效。

2.3 RAID 10

        RAID 1+0 也被称为RAID 10标准,实际是将RAID 1和RAID 0进行结合,即先进行镜像然后进行条带化。以下图为例进行讲解,首先创建2个独立的Raid1,磁盘1 和磁盘2做RAID 1,磁盘3和磁盘4也做成RAID 1。然后将这两个独立的Raid1组成一个Raid0,当往这个逻辑Raid中写数据时,数据会按顺序写入两个Raid1中。这里一定是按顺序的,因为要保证先分别在两个RAID 1中做镜像,最后整体做RAID 0,比如写在硬盘1上的数据1、3、5、7,写在硬盘2中则为数据1、3、5、7,硬盘3中的数据为0、2、4、6,硬盘4中的数据则为0、2、4、6,因此数据在这四个硬盘上组合成Raid10,且具有raid0和raid1两者的特性。如下图所示:服务器的RAID_常用命令_03

Raid 10 和 Raid01的区别:

        RAID 01是先做两个RAID 0,然后整体在做一个RAID 1,所以RAID01虽然可以坏多快 盘,但是只能坏在同一个RAID 0 里,不允许两个RAID 0内都有坏盘,否则就会造成 数据缺失。

        RAID 10恰恰相反,是先做两个RAID 1,再整体做一个RAID 0,所以RAID 10也允许 坏多块盘,前提是坏的这两块盘不是一对镜像盘。

接下来用数据证明RAID 10 优于RAID 01.

服务器的RAID_RAID_04服务器的RAID_linux_05

         假设,此时Disk0故障,那么在RAID 01 中,左边的条带就无法读取了,剩下的两块磁盘坏了任何一块,系统都会over,所以故障率为2/3;同样是Disk0 损坏,发生在RAID10中时,只有当Disk1损坏时,整个系统才会over,此时故障率为1/3.综上所述,RAID 10 优于RAID 01 。

2.4 RAID 3

         RAID 3是把数据分成多个“块”,然后按照奇偶校验方式,将校验信息存放在第N个硬盘上,这块盘被称为校验盘,而实际数据是被存储在另外N-1块磁盘上,当这N个硬盘中的其中一个硬盘出现故障时,通过校验其它N-1个硬盘中的数据也可以恢复原始数据, 如下图所示:服务器的RAID_常用命令_06

        上面提到的校验实际上就是奇偶校验,而奇偶校验值的计算是以各个硬盘的相对应位进行异或的逻辑运算,然后将结果写入奇偶校验硬盘。

拓展:XOR的校验原理如下表:服务器的RAID_数据_07

        这里的A与B值就代表了两个位,从中可以发现,A与B一样时,XOR结果为0,A与B不一样时,XOR结果就是1,而且知道XOR结果和A与B中的任何一个数值,就可以反推出另一个数值。比如A为1,XOR结果为1,那么B肯定为0,如果XOR结果为0,那么B肯定为1。这就是XOR编码与校验的基本原理。

        RAID3的系统中,当一块硬盘失效时,该硬盘上的所有数据块必须使用校验信息重新建立。如果是从好盘中读取数据块,不会有任何变化;但是如果要读取的数据块正好位于已经损坏的硬盘上,则必须同时读取同一带区中的所有其它数据块(磁头同步扫磁盘)。某些情况下,要找的数据在一块磁盘上,那么此时如果依旧是所有磁盘都参与同步去扫,就是一种资源浪费,为了避免这种磁头同步扫描磁盘的现象,又有了RAID 5的产生。

2.5 RAID 5

服务器的RAID_数据_08

        RAID5(分布式奇偶校验的独立磁盘结构)。它的奇偶校验码存在于所有磁盘上(磁头异步扫描磁盘),与RAID 3有所区别,RAID 3的校验盘是最后一块盘。其中的pn代表第n带区的奇偶校验值,其它的意思也相同。RAID5的读出效率很高,写入效率一般,因为独读出数据时是单个磁盘异步操作,而读入时之所以慢是因为每块盘上都有校验,需要计算。RAID 3 与RAID 5相比,重要的区别在于RAID 3每进行一次数据传输,需涉及到所有的阵列盘。而对于RAID 5来说,大部分数据传输只对一块磁盘操作,可进行并行操作。

总结

        各种RAID级别都有自己的优势,没有哪一种是最好的,也没有哪一种是最差的,只有根据生产情况去选择最合适的



推荐阅读
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • 本文比较了eBPF和WebAssembly作为云原生VM的特点和应用领域。eBPF作为运行在Linux内核中的轻量级代码执行沙箱,适用于网络或安全相关的任务;而WebAssembly作为图灵完备的语言,在商业应用中具有优势。同时,介绍了WebAssembly在Linux内核中运行的尝试以及基于LLVM的云原生WebAssembly编译器WasmEdge Runtime的案例,展示了WebAssembly作为原生应用程序的潜力。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • 如何基于ggplot2构建相关系数矩阵热图以及一个友情故事
    本文介绍了如何在rstudio中安装ggplot2,并使用ggplot2构建相关系数矩阵热图。同时,通过一个友情故事,讲述了真爱难觅的故事背后的数据量化和皮尔逊相关系数的概念。故事中的小伙伴们在本科时参加各种考试,其中有些沉迷网络游戏,有些热爱体育,通过他们的故事,展示了不同兴趣和特长对学习和成绩的影响。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 本文讨论了在使用Git进行版本控制时,如何提供类似CVS中自动增加版本号的功能。作者介绍了Git中的其他版本表示方式,如git describe命令,并提供了使用这些表示方式来确定文件更新情况的示例。此外,文章还介绍了启用$Id:$功能的方法,并讨论了一些开发者在使用Git时的需求和使用场景。 ... [详细]
  • Harmony 与 Game Space 达成合作,在 Shard1 上扩展 Web3 游戏
    旧金山20 ... [详细]
author-avatar
洋索菲命_563
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有